home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / crypto / internal / aead.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.0 KB  |  81 lines

  1. /*
  2.  * AEAD: Authenticated Encryption with Associated Data
  3.  * 
  4.  * Copyright (c) 2007 Herbert Xu <herbert@gondor.apana.org.au>
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify it
  7.  * under the terms of the GNU General Public License as published by the Free
  8.  * Software Foundation; either version 2 of the License, or (at your option) 
  9.  * any later version.
  10.  *
  11.  */
  12.  
  13. #ifndef _CRYPTO_INTERNAL_AEAD_H
  14. #define _CRYPTO_INTERNAL_AEAD_H
  15.  
  16. #include <crypto/aead.h>
  17. #include <crypto/algapi.h>
  18. #include <linux/types.h>
  19.  
  20. struct rtattr;
  21.  
  22. struct crypto_aead_spawn {
  23.     struct crypto_spawn base;
  24. };
  25.  
  26. extern const struct crypto_type crypto_nivaead_type;
  27.  
  28. static inline void crypto_set_aead_spawn(
  29.     struct crypto_aead_spawn *spawn, struct crypto_instance *inst)
  30. {
  31.     crypto_set_spawn(&spawn->base, inst);
  32. }
  33.  
  34. int crypto_grab_aead(struct crypto_aead_spawn *spawn, const char *name,
  35.              u32 type, u32 mask);
  36.  
  37. static inline void crypto_drop_aead(struct crypto_aead_spawn *spawn)
  38. {
  39.     crypto_drop_spawn(&spawn->base);
  40. }
  41.  
  42. static inline struct crypto_alg *crypto_aead_spawn_alg(
  43.     struct crypto_aead_spawn *spawn)
  44. {
  45.     return spawn->base.alg;
  46. }
  47.  
  48. static inline struct crypto_aead *crypto_spawn_aead(
  49.     struct crypto_aead_spawn *spawn)
  50. {
  51.     return __crypto_aead_cast(
  52.         crypto_spawn_tfm(&spawn->base, CRYPTO_ALG_TYPE_AEAD,
  53.                  CRYPTO_ALG_TYPE_MASK));
  54. }
  55.  
  56. struct crypto_instance *aead_geniv_alloc(struct crypto_template *tmpl,
  57.                      struct rtattr **tb, u32 type,
  58.                      u32 mask);
  59. void aead_geniv_free(struct crypto_instance *inst);
  60. int aead_geniv_init(struct crypto_tfm *tfm);
  61. void aead_geniv_exit(struct crypto_tfm *tfm);
  62.  
  63. static inline struct crypto_aead *aead_geniv_base(struct crypto_aead *geniv)
  64. {
  65.     return crypto_aead_crt(geniv)->base;
  66. }
  67.  
  68. static inline void *aead_givcrypt_reqctx(struct aead_givcrypt_request *req)
  69. {
  70.     return aead_request_ctx(&req->areq);
  71. }
  72.  
  73. static inline void aead_givcrypt_complete(struct aead_givcrypt_request *req,
  74.                       int err)
  75. {
  76.     aead_request_complete(&req->areq, err);
  77. }
  78.  
  79. #endif    /* _CRYPTO_INTERNAL_AEAD_H */
  80.  
  81.